/**
 * @callback onResult
 * @param {boolean} confirm - true: 确认 / false: 取消
 * @param {*} i - 组件实例
 * @returns {undefined | boolean | Promise<boolean>} 返回true或undefined则关闭弹出，否则阻止关闭弹窗
 */

/** 确认和取消的文本常量，默认为中文
 * 可以引用对象后进行修改
 * @example
 * import { CONST } from './ee-dialog'
 * CONST.confirm = 'confirm'
 * CONST.cancel = 'cancel'
 */
export const CONST = {
  confirm: "确认",
  cancel: "取消"
}

export const props = {
  /** 头部标题文字
   * @type {string}
   */
  title: String,
  /** 右上角带关闭图标
   * @type {boolean}
   */
  closeable: Boolean,

  /** 图标
   * @type {string}
   */
  icon: String,
  /** 内容文本
   * @type {string}
   */
  text: String,
  /** 内容HTML
   * @type {string}
   */
  html: String,

  /** 展示时长(ms)，值为 0 时不会主动消失
   * @type {number}
   */
  duration: Number,

  /** 是否显示确认按钮
   * @type {boolean}
   */
  confirm: Boolean,
  /** 确认按钮文本，默认为'确认'
   * @type {string}
   */
  confirmText: {
    type: String,
    default: CONST.confirm,
  },
  /** 是否显示取消按钮
   * @type {boolean}
   */
  cancel: Boolean,
  /** 取消按钮文本，默认为'取消'
   * @type {string}
   */
  cancelText: {
    type: String,
    default: CONST.cancel,
  },

  /** 点击确认，取消，遮罩关闭对话框时触发的事件
   * 优先于onCancel和onConfirm触发
   * 且返回false不关闭弹窗则不会触发onCancel或onConfirm
   * @type {onResult}
   */
  onResult: Function,
  /** 点击取消，遮罩关闭对话框时触发的事件
   * @type {onResult}
   */
  onCancel: Function,
  /** 点击确认关闭对话框时触发的事件
   * @type {onResult}
   */
  onConfirm: Function,
}